package sorts;

/**
 * Sorter.java
 * Created by Stijn Strickx on May 21, 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */

/**
 * Information about each algorithm's time/memory complexity and stability is
 * provided in their respective classes.
 * 
 * n is the number of records to be sorted.
 * 
 * A sorting algorithm is stable if whenever there are two records R and S with
 * the same key and with R appearing before S in the original list, R will
 * appear before S in the sorted list.
 */

public abstract class Sorter {

  /**
   * Swap the contents of a[i] and a[j]
   */
  protected void swap(Object[] a, int i, int j) {
    Object tmp = a[i];
    a[i] = a[j];
    a[j] = tmp;
  }

  public abstract <T extends Comparable<? super T>> void sort(T[] a);
}